package com.douqu.game.core.util.time;

import com.douqu.game.core.e.E_TimeDataType;
import com.douqu.game.core.e.E_TimeDataUnit;

import java.io.Serializable;

public class TimeData implements Serializable {

    /**
     * 1.每天几点 demo: 1;2300;MX30
     * 2.周几几点 demo: 2;12300;MX30
     * 3.每月几日几点 demo: 3;072300;MX30
     * 4.每月第几周周几几点 demo: 4;242300;MX30
     * 5.指定时间 demo:5;201809012300;HX180
     * 6.开服时间为参考，第几天：demo: 6;1;DX2
     */
    public E_TimeDataType type;

    /**
     * 配置表中第二个字符 类型为5的时候不做解析  length 12
     */
    public String timeValue;

    /**
     * 配置表中第二个字符
     * 类型1:长度2 表示时分  两字符时两字符分                   ******************************************** length 4
     * 类型2:长度3 timeValue的第一个字符表示周 后四个表示时分  两字符时两字符分***************************** length 5
     * 类型3:长度3 timeValue的前两个字符表示日 后四个表示时分  两字符时两字符分***************************** length 6
     * 类型4:长度5 timeValue的第一个字符表示第几周 第二个字符表示周几 后四个字符表示时分 两字符时两字符分*** length 6
     * 类型5  为null
     */
    public int[] timeArray;

    /**
     * 持续时间单位
     * 1.SX 秒 2.MX 分 3.HX 时
     */
    public E_TimeDataUnit unit;
    /** 持续时间*/
    public int keepValue;

    /**
     * check 是否符合条件
     * @return
     */
    public boolean check(){
        return true;
    }

    /**
     * 根据单位获取持续时间
     * @param campany
     * @return
     */
    public long getKeepTime(String campany){
        //先把时间转成统一的秒
        long result = 0;
        //秒缺省
        if (unit.equals(E_TimeDataUnit.MX)){
            result = keepValue * 60L;
        }
        if (unit.equals(E_TimeDataUnit.HX)){
            result = keepValue * 60L * 60L;
        }
        switch (campany){
            case TimeUtils.SECOND:
                break;
            case TimeUtils.MINUTE:
                result = result/60;
                break;
            case TimeUtils.HOUR:
                //小时的话有余数进一
                result = result %(60L * 60) > 0 ? result/(60*60) + 1:result/(60*60);
                break;
            default:
                //默认是毫秒
                result *= 1000;
        }
        return result;
    }

    @Override
    public String toString() {
        return "TimeData{" +
                "type=" + type.getMsg() +
                ", timeValue='" + timeValue + '\'' +
                ", unit=" + unit.getMsg() +
                ", keepValue=" + keepValue +
                '}';
    }
}
